{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 准备数据集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "train=pd.read_csv('datas/house_data.csv')\n",
    "y=train['SalePrice']\n",
    "train1=train.drop(['Id','SalePrice'], axis=1)\n",
    "X=pd.get_dummies(train1).reset_index(drop=True)\n",
    "X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=123)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "def benchmark(model,testset,label):\n",
    "    pred=model.predict(testset)\n",
    "    if pred[pred<0].shape[0]>0:\n",
    "        print('Neg Value')\n",
    "    rmse=np.sqrt(mean_squared_error(label,pred))\n",
    "    lrmse=np.sqrt(mean_squared_error(np.log(label),np.log(pred)))\n",
    "\n",
    "    print('RMSE:',rmse)\n",
    "    print('LRMSE:',lrmse)\n",
    "    return lrmse"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## EDA-特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "import xgboost as xgb"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "def TestDataSet(train):\n",
    "    y=train['SalePrice']\n",
    "    train2=train.drop(['SalePrice'],axis=1)\n",
    "    X=pd.get_dummies(train2) \n",
    "    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=123)\n",
    "    xg_reg=xgb.XGBRegressor(objective='reg:linear',colsample_bytree=0.7,learning_rate=0.01,max_depth=3,n_estimators=3000,subsample=0.7,reg_alpha=0.0006,nthread=6)\n",
    "    xg_reg.fit(X_train,y_train)\n",
    "    benchmark1(xg_reg,X_test,y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 22747.937607375123\n",
      "LRMSE: 0.10267940739078917\n"
     ]
    }
   ],
   "source": [
    "TestDataSet(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "x=train.corr()['SalePrice']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 去掉极弱相关(|corr|<0.3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 24493.170974380915\n",
      "LRMSE: 0.1092756690472248\n"
     ]
    }
   ],
   "source": [
    "TestDataSet(train.drop(x[abs(x)<0.3].index.tolist(),axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "实验结果标注名，草率去掉低于0.3的极弱相关属性就目前的数据集不会改进算法的结果"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 去掉绝对值小于0.1的列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 23953.771426822474\n",
      "LRMSE: 0.10829674662542016\n"
     ]
    }
   ],
   "source": [
    "TestDataSet(train.drop(x[abs(x)<0.1].index.tolist(),axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 去掉相关性小于0.1的列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 23408.818211833623\n",
      "LRMSE: 0.10631323797733613\n"
     ]
    }
   ],
   "source": [
    "TestDataSet(train.drop(x[x<0.1].index.tolist(),axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 去掉正相关但是小于0.1的列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 22897.938327661526\n",
      "LRMSE: 0.10212401106719694\n"
     ]
    }
   ],
   "source": [
    "TestDataSet(train.drop(x[(x<0.1) & (x>0)].index.tolist(),axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Target的偏度分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a1e599c50>"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(train['SalePrice'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 使用降次函数调整数据的偏度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a238fdd68>"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(np.sqrt(train['SalePrice']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1a22e44550>"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(np.log(train['SalePrice']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "def TestDataSet2(train):\n",
    "    y=np.log(train['SalePrice'])\n",
    "    train2=train.drop(['Id','SalePrice'],axis=1)\n",
    "    X=pd.get_dummies(train2)\n",
    "    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=123)\n",
    "    xg_reg=xgb.XGBRegressor(objective='reg:linear',colsample_bytree=0.7,learning_rate=0.01,max_depth=3,n_estimators=3000,subsample=0.7,reg_alpha=0.0006,nthread=6)\n",
    "    xg_reg.fit(X_train,y_train)\n",
    "    benchmark1(xg_reg,X_test,y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE: 0.10575709981973441\n",
      "LRMSE: 0.008893218608158249\n"
     ]
    }
   ],
   "source": [
    "TestDataSet2(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "def TestDataSet3(train):\n",
    "    y=np.sqrt(train['SalePrice'])\n",
    "    if 'Id' in train.columns:\n",
    "        train2=train.drop(['Id','SalePrice'],axis=1)\n",
    "    else:\n",
    "        train2=train.drop(['SalePrice'],axis=1)\n",
    "    X=pd.get_dummies(train2)\n",
    "    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=123)\n",
    "    xg_reg=xgb.XGBRegressor(objective='reg:linear',colsample_bytree=0.7,learning_rate=0.01,max_depth=3,n_estimators=3000,subsample=0.7,reg_alpha=0.0006,nthread=6)\n",
    "    xg_reg.fit(X_train,y_train)\n",
    "    #benchmark1(xg_reg,X_test,y_test)\n",
    "    pred=xg_reg.predict(X_test)\n",
    "    pred=pred**2\n",
    "    y_test=y_test**2\n",
    "    print(np.sqrt(mean_squared_error(np.log(pred),np.log(y_test))))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.10459702326285117\n"
     ]
    }
   ],
   "source": [
    "TestDataSet3(train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.10193706843462444\n"
     ]
    }
   ],
   "source": [
    "TestDataSet3(train.drop(x[(x<0.1) & (x>0)].index.tolist(),axis=1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 小结"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.适当去掉低相关性的列，可能会提升预测的分数--因为去掉噪声；然而也可能去掉更多的信息量\n",
    "\n",
    "2.适当变换最终目标的偏态形式，可能会提升预测的分数；然而如果调整的幅度过大，过滤掉更多的信息量\n",
    "\n",
    "3.合理的填充非常重要\n",
    "\n",
    "最终对于特征工程来讲其实是 噪声 vs 信息量的一个平衡型"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4rc1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
